<?php
/**
 * "Движок" гостевой книги
 *
 * Посты можно добавлять, редактировать и удалять
 * Комментарии к выбранному посту можно добавлять и удалять
 * Комментарии удаляются или по отдельности, или автоматически - при удалении содержащего их поста
 * Для проверки на "взлом" в GET-запросах используется последовательная трехступенчатая конструкция следующего вида:
 *			
 *		if (!is_numeric($var)) 	--> исключение нечисловых значений
 *		(int)($var) 			--> приведение к целому типу
 *	 	if ($var <= 0)			--> исключение отрицательных значений
 */

// Заголовок для построения главной страницы с правильной кодировкой и содержанием

header("Content-Type: text/html;charset=utf-8");

// Осуществляем выбор нужного DS (источника данных) для работы гостевой книги 
// Доступны варианты: "mysql", "pdo" и "csv"

include_once "start.inc.php";

// Инициализация служебных переменных:
// идентификатор выбранного поста или null - для вывода главной формы

	$edit = null;

// сообщение об ошибке

	$errMsg = "";		

// подставляется в поле имени при возврате к набору поста или комментария, в случае "пустого" сообщения  

	$lastname = "";	

// $lastmessage - подставляется в поле сообщения при возврате к набору поста или комментария, в случае "пустого" имени

	$lastmsg = "";

// переход к обработке POST-запроса 

if ($_SERVER["REQUEST_METHOD"]=="POST") {
	include "postHandle.inc.php";		
}

// переход к обработке GET-запроса на удаление поста 

if (isset($_GET['del']) && is_numeric($_GET['del'])) {
	include "postDelete.inc.php";
}

// переход к обработке GET-запроса на редактирование поста

if (isset($_GET['edit']) && is_numeric($_GET['edit'])) {
	$edit = (int)$_GET['edit'];	
		if ($edit <= 0) {	
			$errMsg = "Попытка взлома";
		} else {
			$post = $gbook->getPost($edit);
			if(!$post) {
				$errMsg = "Пост не найден!";
				$edit = null;
			} else 

// обработка строки поста - очистка от экранирующих слэшей, с которыми она хранится в БД 

				$post = stripslashes($post[0]['post']);
		}
}

// переход к обработке GET-запроса на добавление комментария

if (isset($_GET['comm']) && is_numeric($_GET['comm'])) {
		$comm = (int)$_GET['comm'];
		if ($comm <= 0) {
			$errMsg = "Попытка взлома";
		} else {
			$result = $gbook->getPost($comm);
			if (!$result){
				$errMsg = "Пост не найден!"; 		
			} else {

// обработка строки имени - очистка от экранирующих слэшей, с которыми она хранится в БД 

				$name = stripslashes($result[0]['name']);

// обработка строки поста - очистка от экранирующих слэшей, 
// а затем разбиение на строки по признаку "новой строки"
// сделано специально для тех, кто пишет "стихи" в посте

				$post = nl2br(stripslashes($result[0]['post']));

// получение строки даты/времени по значению TIMESTAMP из БД

				$dt = date("d-m-Y H:i:s", $result[0]['datetime']);
				$res = $gbook->getAllComments($comm);
				include "commAdd.inc.php";

// завершение вывода главной страницы и переход к выводу страницы добавления комментария

				exit;
			}
		}
}

// переход к обработке GET-запроса на удаление комментария

if(isset($_GET['cdel']) && is_numeric($_GET['cdel'])){
	include "commDelete.inc.php";
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
	<title>Гостевая книга</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>

<h1>Главная</h1>

<?php

if($errMsg)
	echo "<h3>$errMsg</h3>";
	
switch ($edit) {
	case null:	
	case ($edit <=0):
	include "./html/addpost.html";
	break;
	default:
	include "./html/editpost.html";
	break;
}

include "getAllPosts.inc.php";		

?>

</body>
</html>
